【アップデート】LambdaのランタイムにNode.js22が利用可能になりました

【アップデート】LambdaのランタイムにNode.js22が利用可能になりました

Clock Icon2024.11.21

リテールアプリ共創部@大阪の岩田です。

タイトル通りなのですがLambdaのランタイムとしてNode.js22xが利用可能になりました!

ランタイムの選択肢

さっそく色々試してみます。

やってみる

以後は全てバージニアリージョン & arm64でNode.22xのLambda Functionsを実行しています。

ランタイムバージョンの確認

まずはマネコンをポチポチしてHelloWorldを実行してログを確認してみました。出力されたランタイムバージョンは以下の通りでした。

Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:0e9cb0254cfdee1d92f17152f250572f73e1639502454774e594375792782241

process.version

console.log(process.version)でNode.jsのバージョンをログに出力してみました。出力結果はv22.11.0となっており、上記ランタイムバージョンの場合はNode.jsのv22.11.0を利用しているようです。

uname -a

カーネルのバージョンも確認しておきましょう。以下のコードを実行します。

import { execSync }  from 'child_process';
console.log(execSync('uname -a').toString());

結果は以下の通りでした。

Linux 169.254.49.62 5.10.227-239.884.amzn2.aarch64 #1 SMP Mon Oct 28 22:42:27 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

cat /etc/os-release

同様にcat /etc/os-releaseを確認しました。結果は以下の通りです。

NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.6.20241010"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2028-03-15"
VARIANT_ID="202410241625-2023.271.0"

Node.js22の新機能を試してみる

せっかくなのでNode.js22の新機能を試してみます。node:fsモジュールの globglobSyncが利用可能になっているので、試しにglobSyncでLambda実行環境に用意されているjsファイルを列挙してみました。

https://nodejs.org/docs/latest-v22.x/api/fs.html#fsglobsyncpattern-options

import { globSync } from 'node:fs';
console.log(globSync('/var/runtime/node_modules/**/*.js'));

出力結果は以下の通りでした。

[
  '/var/runtime/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/xhr-http-handler/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-waiter/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-utf8-node/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/pureJs.js',
  '/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/whatwgEncodingApi.js',
  '/var/runtime/node_modules/@aws-sdk/util-utf8/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-uri-escape/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-stream-node/dist-cjs/index.js',
  '/var/runtime/node_modules/@aws-sdk/util-stream/dist-cjs/index.js',
...略  
  '/var/runtime/node_modules/@aws-sdk/node_modules/uuid/dist/esm-node/native.js',
  ... 4293 more items
]

当たり前ですがNode.js22からの新機能も利用できていますね。

詳しくは公式のアナウンスを見ていただくのが確実ですが、globとglobSync以外にも色々な機能追加やアップデートが入っています。

https://nodejs.org/en/blog/announcements/v22-release-announce

抜粋すると以下のような機能追加/アップデートが入っているようです。

  • V8 Update to 12.4
  • Maglev
  • Support require()ing synchronous ESM graphs
  • Running package.json scripts
  • Stream default High Water Mark
  • Watch Mode (node --watch)
  • WebSocket
  • glob and globSync
  • Improve performance of AbortSignal creation

ユースケースに合いそうならこれらもうまく取り入れていきたいですね。

まとめ

簡単にですがLambdaのアップデートについてご紹介しました。

Node.jsはバージョンアップのサイクルが短めということもあり、早め早めに最新版への移行を検討していきたいですね。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.